DERS TANITIM BİLGİLERİ


Dersin Adı
Veri Yapıları ve Algoritmalar I
Kodu
Yarıyıl
Teori
(saat/hafta)
Uygulama/Lab
(saat/hafta)
Yerel Kredi
AKTS
CE 221
Güz
3
2
4
7
Ön-Koşul(lar)
 SE 116Başarılı olmak (En az DD notu almış olmak)
Dersin Dili
İngilizce
Dersin Türü
Zorunlu
Dersin Düzeyi
Lisans
Dersin Veriliş Şekli -
Dersin Öğretim Yöntem ve Teknikleri Problem çözme
Deney / Laboratuvar / Atölye uygulama
Anlatım / Sunum
Dersin Koordinatörü
Öğretim Eleman(lar)ı
Yardımcı(ları)
Dersin Amacı Bu dersin amacı, öğrencilere, bilgisayar algoritmalarının tasarım ve analizinin temelini oluşturan Soyut Veri Yapıları (SVY) kavramını öğretmektir. Bu ders temel SVY’leri ele alarak, bu yapıların pratikte gerçeklenmesini sağlayan bazı veri yapıları ile algoritmaları sunar. Derste, algoritmaların çalışma zamanları asimtotik olarak analiz edilerek, algoritma verimliliği vurgulanır. İşlenen konular arasında lineer soyut veri yapıları, yığınlar, ikili ağaçlar, AVL ağaçları kırpma ve sıralama sayılabilir. Uygulamalar ve programlama için SE 115 ve/veya SE 116 derslerinde öğretilen programlama dillerinden biri kullanılır.
Öğrenme Çıktıları Bu dersi başarıyla tamamlayabilen öğrenciler;
  • Özyinelemeli olan ya da olmayan algoritmaların asimptotik çalışma zamanlarını büyük-O gösterimini kullanarak analiz edebilecektir,
  • Veri ekleme ve silme işlemleri yapan arama problemlerinin çözümünde, dizi ve bağlı liste yapıları ile kırpma teknikleri arasından daha avantajlı olanı seçebilecektir.
  • Ağaç yapılarından uygun olanları kullanarak arama, ekleme ve silme operasyonları başına O (log n) maliyetle çalışacak bilgisayar programları geliştirebilecektir.
  • Sıralamaya ihtiyaç duyan verimli uygulamalar için, doğru sıralama algoritmasını seçebilecektir.
  • Çeşitli veri yapılarının kullanım alanlarını tarif edebilecektir.
  • Yaygın veri yapılarını idame ettirmek için gerekli operasyonları açıklayabilecektir.
  • Hesaplama problemlerini çözümünde gerekecek uygun veri yapılarını tasarlayabilecektir.
  • Basit hesaplama problemlerine çizge algoritmaları kullanan çözümler tasarlayabilecektir.
Ders Tanımı Algoritma analizi, lineer veri yapıları, ağaçlar, kırpma, öncelik kuyrukları, sıralama ve çizge algoritmaları.
Dersin İlişkili Olduğu Sürdürülebilir Kalkınma Amaçları

 



Dersin Kategorisi

Temel Ders
X
Uzmanlık/Alan Dersleri
Destek Dersleri
İletişim ve Yönetim Becerileri Dersleri
Aktarılabilir Beceri Dersleri

 

HAFTALIK KONULAR VE İLGİLİ ÖN HAZIRLIK ÇALIŞMALARI

Hafta Konular Ön Hazırlık
1 Giriş: Matematiksel Tekrar ve Özyineleme M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 1.1, 1.2, 1.3)
2 Algoritma Analizi (temel algoritma konseptleri, çalışma zamanlarının modellenmesi, Big-Oh gösterimi, çalışma zamanlarının hesaplanması) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 2.1, 2.2, 2.3)
3 Algoritma Analizi ve Doğrusal Veri Yapıları (Bağlı Listeler) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 2.4, 3.1 - 3.5)
4 Doğrusal Veri Yapıları (Bağlı Listeler, Yığıtlar, Yığıt Uygulamaları) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 3.5, 3.6)
5 Doğrusal Veri Yapıları (Kuyruklar) ve Ağaçlar (İkili Ağaçlar) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 3.7, 4.1, 4.2)
6 Ağaçlar (İkili Arama Ağaçları) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 4.3)
7 Ağaçlar (AVL Ağaçları) M. A. Weiss, Data Structures and Algorithm Analysis in in Java, 3/e, Pearson, 2012 (Ch. 4.4)
8 Midterm
9 Kırpma M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 5.1 – 5.5)
10 Öncelik Kuyrukları: İkili Yığınlar M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 6.1, 6.2, 6.3)
11 Sıralama (Araya Eklemeli Sıralama, Kabuk Sıralama, Yığın Sıralama) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 7.1, 7.2, 7.3, 7.4, 7.5)
12 Sıralama (Tümleştirerek Sıralama, Hızlı Sıralama) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 7.6, 7.7)
13 Çizge Algoritmaları (Tanımlar, Gösterimler, Topolojik Sıralama) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 9.1 - 9.2)
14 Çizge Algoritmaları (En Kısa Yol Algoritmaları) M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012 (Ch. 9.3)
15 Dönemin gözden geçirilmesi
16 Final Sınavı
Ders Kitabı

M. A. Weiss, Data Structures and Algorithm Analysis in Java, 3/e, Pearson, 2012

Önerilen Okumalar/Materyaller

 

DEĞERLENDİRME ÖLÇÜTLERİ

Yarıyıl Aktiviteleri Sayı Katkı Payı %
Katılım
Laboratuvar / Uygulama
1
30
Arazi Çalışması
Küçük Sınav / Stüdyo Kritiği
1
10
Portfolyo
Ödev
1
Sunum / Jüri Önünde Sunum
Proje
Seminer/Çalıştay
Sözlü Sınav
Ara Sınav
1
20
Final Sınavı
1
40
Toplam

Yarıyıl İçi Aktivitelerin Başarı Notuna Katkısı
4
60
Yarıyıl Sonu Aktivitelerin Başarı Notuna Katkısı
1
40
Toplam

AKTS / İŞ YÜKÜ TABLOSU

Yarıyıl Aktiviteleri Sayı Süre (Saat) İş Yükü
Teorik Ders Saati
(Sınav haftası dahildir: 16 x teorik ders saati)
16
3
48
Laboratuvar / Uygulama Ders Saati
(Sınav haftası dahildir. 16 x uygulama/lab ders saati)
16
2
Sınıf Dışı Ders Çalışması
14
3
42
Arazi Çalışması
Küçük Sınav / Stüdyo Kritiği
1
12
Portfolyo
Ödev
1
36
Sunum / Jüri Önünde Sunum
Proje
Seminer/Çalıştay
Sözlü Sınav
Ara Sınavlar
1
16
Final Sınavı
1
24
    Toplam
210

 

DERSİN ÖĞRENME ÇIKTILARININ PROGRAM YETERLİLİKLERİ İLE İLİŞKİSİ

#
Program Yeterlilikleri / Çıktıları
* Katkı Düzeyi
1
2
3
4
5
1

Matematik, Fen Bilimleri, Bilgisayar Bilimleri ve Yazılım Mühendisliği konularında yeterli bilgi sahibidir; bu alanlardaki kuramsal ve uygulamalı bilgileri, Yazılım Mühendisliği problemlerinde kullanır.

2

Karmaşık Yazılım Mühendisliği problemlerini saptar, tanımlar, formüle eder ve çözer; bu amaca uygun analiz ve modelleme yöntemlerini seçer ve uygular.

X
3

Karmaşık bir yazılım sistemini, süreci veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlar, gerçekleştirir, sınar, doğrular, raporlar, ölçer ve bakımını yapar; bu amaçla modern yöntemleri uygular.

X
4

Yazılım Mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları geliştirir, seçer ve kullanır; bilişim teknolojilerini etkin bir şekilde kullanır.

X
5

Yazılım Mühendisliği problemlerinin incelenmesi için deney tasarlar, deney yapar, veri toplar, sonuçları analiz eder ve yorumlar.

X
6

Yazılım Mühendisliği disiplini içinde ve çok disiplinli takımlarda etkin biçimde çalışır; bireysel çalışma sergiler.

7

Türkçe sözlü ve yazılı etkin iletişim kurar; etkin rapor yazar ve yazılı raporları anlar, tasarım ve üretim raporları hazırlar, etkin sunum yapar, açık ve anlaşılır talimat verir ve alır.

8

Mühendislik ve Yazılım uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi sahibidir; mühendislik ve yazılım çözümlerinin hukuksal sonuçlarının farkındadır.

9

Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibidir. 

10

Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi sahibidir; girişimcilik, yenilikçilik hakkında bilinçlidir; sürdürülebilir kalkınma hakkında bilgi sahibidir.

11

Bir yabancı dili kullanarak Yazılım Mühendisliği ile ilişkili konularda, bilgi toplar ve meslektaşları ile iletişim kurar. ("European Language Portfolio Global Scale", Level B1)

12

İkinci yabancı dili orta düzeyde kullanır.

13

Yaşam boyu öğrenmenin gerekliliği bilincindedir; bilgiye erişebilir, bilim ve teknolojideki gelişmeleri izler ve kendini sürekli yeniler; insanlık tarihi boyunca oluşan bilgi birikimini Yazılım Mühendisliği alanıyla ilişkilendirir. 

*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest